package reflection;

import lombok.extern.slf4j.Slf4j;
import reflection.entity.Person;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author DonaldCen
 * @desc ReflectionMain
 * @date 2025/11/10 9:57
 */
@Slf4j
public class ReflectionMain {

    public static void main(String[] args) throws Exception {
        Person p = new Person("DonaldCen",18);
        Class<?> cls = p.getClass();

        // 1. 调用public方法（sayHello）
        Method sayHelloMethod = cls.getMethod("sayHello");
        sayHelloMethod.invoke(p); // 输出：Hello!

        // 2. 调用private方法（getInfo）
        Method getInfoMethod = cls.getDeclaredMethod("getInfo", String.class);
        getInfoMethod.setAccessible(true); // 允许访问private
        String result = (String) getInfoMethod.invoke(p, "提示");
        System.out.println(result); // 输出：提示：我是一个有趣的人
    }
}
